package com.example.springaop2.config;

import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/*
* 判断用户的登录状态
* */
public class LoginIntercept implements HandlerInterceptor {
    /*
    * 返回 true 表示 拦截判断通过，可以访问后面的服务接口
    * 返回 false 表示 拦截判断未通过，直接返回结果给前端，不可以访问后面的服务接口
    * */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 通过 请求对象获取 会话对象，记住一定置为false
        // 这样做的意思就是：如果会话不存在，不会去创建一个新的会话
        HttpSession session = request.getSession(false);
        // 对 获取到的会话对象 进行 判断
        // 如果用户信息存在，则 session不为null，session 会有一个 用户信息对象 userinfo
        if(session != null && session.getAttribute("userinfo") != null){
            return true;// 表示已经登录
        }
        // 走到这里，说明用户信息不存在，用户处于未登录状态，直接返回结果
        response.sendRedirect("/login.html");
        return false;
    }
}
